import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author DengJia
 * @Date 2021/8/10 22:39
 * @Description
 */

public class SwitchDemo {
    public static void main(String[] args) {
//        Random random = new Random();
//        int c = random.nextInt(26) + 'a';
////        System.out.println(c);
//
//        switchExample(2);
//        fibonacci(10);

        vampireNumbers();
        v2();

    }

    static void switchExample(int num) {
        // case穿透现象（记得添加break）
        switch (num) {
            case 1:
                System.out.println("数字：" + 111111);
            case 2:
                System.out.println("数字：" + 222222);
            default:
                System.out.println("数字：xxxxxx");
        }
    }

    /**
     * 斐波拉契数列
     */
    static int a = 0, b = 1;

    static void fibonacci(int num) {
        Stream<Integer> generate = Stream.generate(() -> {
            int tmp = a;
            a = b;
            b = tmp + b;
            return a;
        });
        List<Integer> list = generate.limit(num).collect(Collectors.toList());
        System.out.println(list);
    }

    /**
     * 吸血鬼数字
     */
    static void vampireNumbers() {
        int count = 0; // 4位的吸血鬼数字的个数
        int product; // 乘积
        char[] pArray; // 乘积的字符数组
        char[] nArray; // 数字的字符数组
        int num = 0; // 内层循环体的执行次数
        for (int i = 11; i < 100; i++)
            for (int j = Math.max(1000 / i + 1, i); j < 100; j++) {//关键代码1
                product = i * j;
                if (product % 100 == 0 || (product - i - j) % 9 != 0) //关键代码2
                    continue;
                num++;
                pArray = String.valueOf(product).toCharArray();
                nArray = (String.valueOf(i) + String.valueOf(j)).toCharArray();
                Arrays.sort(pArray);
                Arrays.sort(nArray);
                if (Arrays.equals(pArray, nArray)) {
                    System.out.println(i + "*" + j + "=" + product);
                    count++;
                }
            }
        System.out.println("共找到" + count + "组吸血鬼数字");
        System.out.println("内层循环共执行" + num + "次");
    }

    static void v2() {
        // TODO Auto-generated method stub
        for (int i = 10; i < 100; i++) {
            //i表示第一个两位数
            for (int j = 10; j < 100; j++) {
                //j表示第二个两位数
                int product = i * j;
                //获得乘积
                if (product % 100 != 0 && product > 999 && product < 10000) {
                    //过滤条件：1不能被100整除2必须是4位数
                    String[] value1 = String.valueOf(product).split("");
                    //把乘积转换为字符串，然后在以空格分割为数组
                    String[] value2 = (String.valueOf(i) + String.valueOf(j)).split("");
                    //把两位数相连接为字符串，然后在以空格分割为数组
                    Arrays.sort(value1);
                    //排序一下从小到大
                    Arrays.sort(value2);
                    //排序一下从小到大
                    if (Arrays.equals(value1, value2)) {
                        //调用Arrays中的静态方法equals进行比较
                        System.out.println(i + "*" + j + "=" + product);
                        //打印吸血鬼数
                    }
                }
            }
        }
    }
}
